// 引入express包
const express = require('express')

// 引入cors包
const cors = require('cors')
//引入body-parser包
const bodyParser = require('body-parser')
//引入用户登录注册的路由
const userRouter = require('./router/user')
// 引入用户中心路由
const userinfoRouter = require('./router/userinfo')
// 引入文章类别模块路由
const cateRouter = require('./router/cate')
// 引入文章信息类别路由
const articleRouter = require('./router/article')
// 注册一个静态资源的 全局中间件
const path=require('path')
const app=express()
app.use('/uploads',express.static(path.join(__dirname,'./uploads')))
// const jwt = require('')
// 引入express-jwt
const jwtParser = require('express-jwt')
// 引入配置文件
const config=require('./config')
const userRuler = require('./schema/user')

// 创建服务器实例
const app = express()
// 全局注册跨域处理中间件
app.use(cors())
// 全局注册解析POST请求体(urlencoded格式)的中间件
app.use(bodyParser.urlencoded({ extended: false }))
//在路由之前 注册一个全局的中间件对错误情况进行处理
app.use((req, res, next) => {
    res.cc=(err,status = 1) => {//status=1表示默认值为1,err就是错误对象或消息
        res.send({
            status,
            message: err instanceof Error?err.message:err
       }) 
    }
    next()
})
//在路由模块前注册解析app的中间件
// 
app.use(jwtParser({ secret: config.tokenSecret,algorithms:['HS256'] }).unless({ path: [/^\/api\//] }))

//在全局中间件下面注册路由模块
app.use('/api', userRouter)
// app.use('/my', (req, res) => {
//     res.send('ok')
// })
app.use('/my', userinfoRouter)
// 在全局中间件注册文章类别路由模块
app.use('/my', cateRouter)
// 在全局中间件的下面去注册文章信息路由模块
app.use('/my',articleRouter)
// 注册全局错误处理中间件
app.use((err, req, res, next) => {
    // 判断用户token是否未授权
    if (err.name === 'UnauthorizedError') {
        return res.send({
            status: 1,
            message:`身份认证失败！`
   })
}
  return  res.cc(err)
    next()
})
// 监听端口
app.listen(3006, () => {
    console.log(`服务启动成功: http://localhost:3006`);
})
